ioemu: Avoid unaligned guest memory accesses on ia64.
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Wed, 29 Aug 2007 14:47:55 +0000 (15:47 +0100)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Wed, 29 Aug 2007 14:47:55 +0000 (15:47 +0100)
Signed-off-by: Alex Williamson <alex.williamson@hp.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
tools/ioemu/target-i386-dm/exec-dm.c

index 6a5eb5eaaa88950583b418f4967fec8a8e392277..0655eaaa2fcc996d40b723004ac5e079946db9cb 100644 (file)
@@ -470,6 +470,12 @@ static void memcpy_words(void *dst, void *src, size_t n)
 #else
 static void memcpy_words(void *dst, void *src, size_t n)
 {
+    /* Some architectures do not like unaligned accesses. */
+    if (((unsigned long)dst | (unsigned long)src) & 3) {
+        memcpy(dst, src, n);
+        return;
+    }
+
     while (n >= sizeof(uint32_t)) {
         *((uint32_t *)dst) = *((uint32_t *)src);
         dst = ((uint32_t *)dst) + 1;